2장. 파운데이션 모델 이해하기
출처 — Chip Huyen, 『AI 엔지니어링』(한국어판), 2장 (pp. 86~152). 원문 PDF
ai_engineering_final_v11_260909.pdf(2026-09-09 판)파운데이션 모델을 직접 학습시키지 않고도, 어떤 모델을 고르고 어떻게 다룰지 판단하려면 그 안을 들여다봐야 한다 — 학습 데이터가 무엇을 할 수 있는지 정하고, 아키텍처와 크기가 비용과 성능을 정하고, 사후 학습이 "쓸 만하게" 다듬고, 샘플링이 매 순간 무엇을 출력할지 확률로 고른다.
학습 목표
이 장을 끝내면 다음을 할 수 있다.
- 모델의 학습 데이터가 왜 "원하는 데이터"가 아니라 "구할 수 있는 데이터"로 정해지는지 설명하고, 그 결과로 생기는 언어·도메인 격차를 구체적 수치로 든다.
- 트랜스포머 아키텍처가 seq2seq의 어떤 문제를 어떻게 풀었는지, 그리고 맘바·SSM 같은 대안이 왜 등장했는지 비교한다.
- 파라미터 수·학습 토큰 수·FLOP 세 지표로 모델 규모를 설명하고, 친칠라 스케일링 법칙으로 컴퓨팅 예산에 맞는 모델 크기를 추론한다.
- 사전 학습·지도 파인튜닝(SFT)·선호도 파인튜닝(RLHF/DPO)의 역할 차이를 설명하고, 각 단계가 왜 필요한지 구분한다.
- 온도·top-k·top-p 같은 샘플링 변수가 모델 출력에 미치는 영향을 설명하고, 애플리케이션 목적에 맞는 값을 선택한다.
- 테스트 시점 연산·구조화된 출력 기법을 구분해 적용하고, AI의 확률적 특성이 왜 비일관성·환각으로 이어지는지 설명한다.
전체 흐름도
[ 파운데이션 모델을 만드는 세 가지 설계 축 ]
│
├─ ① 학습 데이터 (§1)
│ "원하는 데이터"가 아니라 "구할 수 있는 데이터"로 학습
│ └→ 언어·도메인 격차 (저자원 언어, 도메인 특화 모델)
│
├─ ② 모델링 (§2)
│ 아키텍처: 트랜스포머(어텐션) vs 대안(RNN·SSM·맘바·잠바)
│ 규모: 파라미터 수 · 학습 토큰 수 · FLOP
│ └→ 친칠라 스케일링 법칙: 컴퓨팅 예산 → 최적 크기
│
├─ ③ 사후 학습 (§3)
│ 사전 학습(완성 잘함) → SFT(대화로 전환) → 선호도 파인튜닝(사람 선호 반영)
│ └→ "쇼고스 괴물에 웃는 얼굴 그리기"
│
▼
[ ④ 샘플링 (§4) — 모델이 매 순간 출력을 "고르는" 방식 ]
│ 기초: 로짓 → 소프트맥스 → 확률분포에서 샘플링
│ 전략: 온도 · top-k · top-p · 중단 조건
│ 테스트 시점 연산: 여러 번 생성해 가장 좋은 것을 고른다
│ 구조화된 출력: 프롬프팅 · 후처리 · 제약 샘플링 · 파인튜닝
▼
[ 확률적 특성 → 비일관성 · 환각 ]
└→ 3장(평가)·4장(환각 측정)·5장(프롬프팅으로 완화)에서 이어진다
0. 용어 사전
선행 용어 — 이 장을 읽기 전에
아래 4개는 1장에서 다룬 개념이다. 낯설면 1장을 먼저 보면 좋다. 판정 기준 — 「이 말을 모르면 이 장을 못 읽는가」. 이 장에서 처음 설명하는 개념(트랜스포머·RLHF·온도 등)은 선행이 아니다 — 본문의 몫이므로 아래 표에 없다.
| 한글 용어 | 원문 영문명 | 의미 (정의 · 비유 · 본문 위치) |
|---|---|---|
| 파운데이션 모델 | Foundation Model | (선행) 대규모 데이터로 학습돼 다양한 다운스트림 작업에 범용으로 쓰이는 모델(1장 §1.2). 세입자마다 용도가 다른 건물처럼, 하나의 모델이 번역·요약·코드 작성을 함께 맡는다. 이 장 전체가 이 모델을 "어떻게 만드는가"를 다룬다. 본문 §1·§2·§3·§4 |
| 대규모 언어 모델(LLM) | Large Language Model | (선행) 파라미터 수가 많아 다양한 언어 과제를 폭넓게 수행하는 언어 모델(1장 §1.1). 이 장의 라마·GPT·InstructGPT 예시가 모두 LLM이다. 본문 §1·§2·§3 |
| 자기 지도 학습 | Self-Supervised Learning | (선행) 사람이 붙인 레이블 없이, 데이터 자체에서 정답(다음 토큰)을 뽑아 학습하는 방식(1장 §1.1). 이 장 §3에서 "사전 학습이 자기 지도 학습으로 이뤄진다"는 전제로 사후 학습을 설명한다. 본문 §3 |
| AI 엔지니어링 | AI Engineering | (선행) 파운데이션 모델을 기반으로 애플리케이션을 만드는 과정(1장 §1.3). 이 장은 그 기반이 되는 모델 자체의 설계 요소(데이터·아키텍처·사후 학습·샘플링)를 다룬다. 본문 전체 |
이 장의 용어 전부 — 찾아보기
읽다가 막히면 여기서 찾는다. 위 선행 4개는 다시 적지 않는다. 본문 등장 순서로 둔다.
| 한글 용어 | 원문 영문명 | 의미 |
|---|---|---|
| 사전 학습 | Pre-training | 자기 지도 학습으로 다음 토큰 예측 능력을 갖추는 학습 단계. 대화·안전성은 보장하지 않는다 |
| 사후 학습 | Post-training | 사전 학습된 모델을 사람의 의도에 맞게 다듬는 단계(SFT + 선호도 파인튜닝) |
| 커먼 크롤 | Common Crawl | 비영리 단체가 인터넷을 주기적으로 크롤링해 만드는 대표적 학습 데이터 소스 |
| C4 | Colossal Clean Crawled Corpus | 구글이 커먼 크롤을 정제해 만든 부분집합 |
| 저자원 언어 | Low-Resource Language | 커먼 크롤 등에서 데이터 비중이 1% 미만인, 학습 데이터가 부족한 언어 |
| 도메인 특화 모델 | Domain-Specific Model | 신약 발견·암 선별처럼 특정 전문 분야 데이터로만 학습한 모델 |
| CLIP | Contrastive Language-Image Pretraining | 이미지-텍스트를 대조 학습으로 같은 벡터 공간에 매핑하는 오픈AI의 모델 |
| 트랜스포머 아키텍처 | Transformer Architecture | 어텐션 메커니즘만으로 시퀀스를 처리하는, 현재 가장 널리 쓰이는 아키텍처 |
| seq2seq | Sequence-to-Sequence | 인코더-디코더 구조로 토큰 시퀀스를 입력받아 시퀀스를 출력하는 초기 아키텍처(RNN 기반) |
| 어텐션 메커니즘 | Attention Mechanism | 쿼리·키·값 벡터로 각 입력 토큰에 얼마나 주목할지 계산하는 트랜스포머의 핵심 |
| 프리필 | Prefill | 추론의 첫 단계 — 입력 토큰을 병렬로 처리해 중간 상태(키·값)를 만든다 |
| 디코드 | Decode | 추론의 두 번째 단계 — 출력 토큰을 한 번에 하나씩 순차적으로 생성한다 |
| 멀티헤드 어텐션 | Multi-Head Attention | 쿼리·키·값 벡터를 여러 작은 벡터로 나눠 서로 다른 헤드가 동시에 주목하게 하는 방식 |
| MLP 모듈 | Multi-Layer Perceptron Module | 비선형 활성화 함수로 구분된 선형 레이어들로 구성된 트랜스포머 블록의 구성 요소 |
| 임베딩 모듈 | Embedding Module | 토큰과 위치를 임베딩 벡터로 바꿔 합산하는, 트랜스포머 블록 이전의 모듈 |
| 모델 헤드(언임베딩 레이어) | Model Head (Unembedding Layer) | 출력 벡터를 토큰 확률로 매핑하는, 트랜스포머 블록 이후의 출력 레이어 |
| RNN | Recurrent Neural Network | 입력을 순차적으로 처리하는 순환 신경망. seq2seq의 인코더·디코더로 쓰였다 |
| 상태공간모델(SSM) | State Space Model | 장거리 의존성을 다루기 위해 등장한 트랜스포머 대안 아키텍처 계열(S4·H3·맘바·잠바) |
| 전문가 혼합(MoE) | Mixture-of-Experts | 파라미터를 여러 전문가 그룹으로 나누고 토큰마다 일부만 활성화하는 희소 모델 구조 |
| 희소 모델 | Sparse Model | 파라미터 중 0인 값의 비율이 높아, 실제 연산량이 파라미터 수보다 훨씬 적은 모델 |
| FLOP | Floating Point Operation | 부동소수점 연산 횟수. 모델 학습에 필요한 컴퓨팅 자원을 나타내는 표준 단위 |
| 활용률 | Utilization | 기기의 최대 컴퓨팅 성능 대비 실제 사용할 수 있는 성능의 비율 |
| 컴퓨팅-최적 모델 | Compute-Optimal Model | 고정된 FLOP 예산 안에서 최고 성능을 내는 모델 크기·데이터 크기 조합 |
| 친칠라 스케일링 법칙 | Chinchilla Scaling Law | 학습 토큰 수가 모델 크기의 약 20배일 때 컴퓨팅-최적이라는 딥마인드의 발견 |
| 역스케일링 | Inverse Scaling | 모델이나 학습을 더 키울수록 오히려 특정 성능이 떨어지는 현상 |
| 스케일링 외삽 | Scaling Extrapolation | 작은 모델의 하이퍼파라미터 실험 결과로 큰 모델의 최적값을 예측하려는 연구 분야 |
| 창발력 | Emergent Ability | 모델 규모가 일정 수준을 넘어야만 나타나는, 작은 모델에서는 관찰되지 않는 능력 |
| 지도 파인튜닝(SFT) | Supervised Finetuning | 고품질 (프롬프트, 응답) 시연 데이터로 사전 학습된 모델을 대화용으로 파인튜닝하는 단계 |
| 시연 데이터 | Demonstration Data | SFT에 쓰이는 (프롬프트, 응답) 형식의 예시 데이터. 행동 복제라고도 부른다 |
| 선호도 파인튜닝 | Preference Finetuning | 사람의 선호에 맞는 응답을 내도록 모델을 추가로 다듬는 단계(RLHF/DPO/RLAIF) |
| RLHF | Reinforcement Learning from Human Feedback | 사람 피드백으로 학습한 보상 모델을 이용해 강화 학습으로 모델을 다듬는 기법 |
| DPO | Direct Preference Optimization | 별도 보상 모델 없이 선호 데이터로 직접 모델을 최적화하는, RLHF보다 단순한 기법 |
| RLAIF | RL from AI Feedback | 사람 대신 AI가 매긴 선호로 강화 학습을 수행하는 기법 |
| 보상 모델 | Reward Model | (프롬프트, 응답) 쌍에 점수를 매기도록 학습된 모델. RLHF의 핵심 구성 요소 |
| Best of N | Best of N | 여러 출력을 무작위로 생성해 그중 가장 좋은 것을 고르는 테스트 시점 연산 기법 |
| 온도(temperature) | Temperature | 소프트맥스 이전에 로짓을 나누는 값. 높을수록 출력이 다양해지고 낮을수록 결정적이 된다 |
| top-k | Top-k Sampling | 확률 상위 k개의 토큰만 후보로 남기고 그 안에서 샘플링하는 전략 |
| top-p(뉴클리어스 샘플링) | Top-p (Nucleus Sampling) | 누적 확률이 p에 도달할 때까지의 토큰만 후보로 남기는, 동적으로 후보 수가 바뀌는 전략 |
| 로그프롭 | Log Probability (logprob) | 로그 스케일로 표현한 확률. 언더플로를 줄이고 시퀀스 확률 계산을 쉽게 한다 |
| 테스트 시점 연산 | Test-Time Compute | 추론 시 더 많은 연산(여러 출력 생성 등)을 들여 응답 품질을 높이는 접근 |
| 자기 일관성 | Self-Consistency | 같은 문제를 여러 번 풀게 하고 가장 많이 나온 답을 최종 답으로 고르는 기법 |
| 구조화된 출력 | Structured Output | JSON·SQL처럼 정해진 형식을 따르는 모델 출력 |
| 시맨틱 파싱 | Semantic Parsing | 자연어를 기계가 읽을 수 있는 구조화된 형식(SQL 등)으로 변환하는 작업 |
| 제약 샘플링 | Constrained Sampling | 문법에 맞지 않는 토큰의 확률을 걸러내고 남은 토큰들에서만 샘플링하는 기법 |
| 특성 기반 전이 | Feature-Based Transfer | 파운데이션 모델에 분류기 헤드를 붙여 정해진 클래스만 출력하게 만드는 전이 학습 방식 |
| 환각 | Hallucination | 사실에 근거하지 않은 응답을 내놓는 현상 |
| 자기 기만 | Self-Delusion | 모델이 자신이 생성한 문장을 주어진 사실처럼 취급해 틀린 내용을 계속 만들어내는 현상 |
| 눈덩이 환각 | Snowballing Hallucination | 초기의 잘못된 가정을 정당화하려고 이후 답변까지 계속 틀리게 되는 현상 |
| 비일관성 | Inconsistency | 같거나 비슷한 입력에 대해 모델이 서로 다른 응답을 내놓는 현상 |
1. 학습 데이터
모델은 학습한 데이터의 특성에 따라 할 수 있는 일이 정해진다. 학습 데이터에 한국어가 없으면 모델은 한국어를 번역할 수 없고, 동물 사진만 본 이미지 분류 모델은 식물 사진을 제대로 인식하지 못한다. 문제는 "원하는 데이터"를 구하기가 어렵고 비용도 많이 든다는 점이다. 그래서 모델 개발자는 원하는 데이터가 아니라 구할 수 있는 데이터를 최대한 활용한다.
대표적인 원천이 커먼 크롤이다. 비영리 단체가 인터넷을 주기적으로 크롤링해 만드는 이 데이터셋은 2022~2023년 매월 20~30억 개의 웹 페이지를 모았다. 구글이 이를 정제한 부분집합이 C4다. 문제는 품질이다 — 낚시성 제목·허위정보·인종차별·음모론까지 인터넷에 있는 모든 것이 섞여 있다. 워싱턴 포스트 조사에 따르면 데이터셋에서 가장 흔한 1,000개 웹사이트 중 다수가 'NewsGuard' 신뢰도 평가에서 낮은 점수를 받았다. 그런데도 GPT-3·제미나이 등 학습 데이터를 공개하는 대부분의 모델이 커먼 크롤을 가공해 쓰고, 비공개 모델도 대부분 사용할 것으로 추측된다. 일부 팀은 저품질 데이터를 걸러내기 위해 휴리스틱을 쓴다 — 오픈AI는 GPT-2를 학습할 때 레딧에서 추천 3개 이상을 받은 게시글만 사용했다. 이 방식이 무관심한 글은 걸러내지만, 레딧 전체가 좋은 데이터인 것은 아니다.
그렇다면 "모든 데이터를 다 쓰면 되지 않을까"라는 의문이 들 수 있다. 하지만 더 많은 데이터는 더 많은 컴퓨팅 자원을 요구하고, 데이터 양이 많다고 성능이 자동으로 좋아지지도 않는다. 구나세카르 등의 연구(2023)는 70억 개의 고품질 코딩 데이터 토큰만으로 13억 파라미터 모델을 학습했는데, 이 모델이 훨씬 큰 모델들보다 코딩 벤치마크에서 뛰어난 성능을 보였다. 적은 양의 고품질 데이터가 대량의 저품질 데이터를 이긴 사례다. 데이터 품질·큐레이션은 8장에서 더 자세히 다룬다.
1.1 다국어 모델
인터넷에서 가장 많이 쓰이는 언어는 영어다. 라이 등의 연구(2023)에 따르면 커먼 크롤 데이터의 45.88%가 영어이고, 2위인 러시아어(5.97%)보다 8배 많다. 표 2-1의 상위 언어(영어·러시아어·독일어·중국어·일본어·프랑스어·스페인어·이탈리아어·네덜란드어·폴란드어·포르투갈어)를 벗어나면 대부분 저자원 언어다 — 학습에 쓸 수 있는 데이터 자체가 부족한 언어라는 뜻이다.
더 심각한 건 과소 대표다. 사용 인구는 많은데 커먼 크롤 비중은 극단적으로 낮은 언어들이 있다. 표 2-2를 보면 벵골어는 세계 인구의 3.40%가 쓰지만 커먼 크롤 비중은 0.093%에 불과해, "전 세계 인구 비율 대비 데이터 비율"이 36.56이다(값이 1이면 균형, 클수록 과소 대표). 스와힐리어는 이 값이 무려 11,526에 달한다. 반면 영어는 0.40으로, 인구 비율보다 데이터가 더 많다.
이 격차는 실제 성능 차이로 이어진다. 57개 과목 14,000문제로 구성된 MMLU 벤치마크에서 GPT-4는 텔루구어 같은 저자원 언어보다 영어에서 훨씬 좋은 성능을 보였다. 예니 준의 실험에서도 GPT-4는 아르메니아어·페르시아어보다 영어 수학 문제를 3배 이상 잘 풀었고, 버마어·암하라어 문제는 6개 중 하나도 풀지 못했다. GPT-4가 MMLU에서 부진했던 텔루구어·마라티어·펀자브어는 모두 커먼 크롤 데이터가 극히 적은 언어다. 다만 데이터량만이 원인은 아니다 — 언어마다 고유한 구조·문화적 맥락이 있어 모델이 학습하기 어려운 경우도 있다.
"그럼 다른 언어를 영어로 번역해 처리하면 되지 않을까"라는 생각도 완벽한 해법은 아니다. 첫째, 그러려면 애초에 저자원 언어를 잘 이해하는 번역 모델이 필요하다. 둘째, 번역 과정에서 정보가 손실된다 — 베트남어처럼 화자 간 관계를 나타내는 대명사가 있는 언어를 영어로 옮기면 모두 I·you로 뭉개져 관계 정보가 사라진다. 뉴스가드의 2023년 실험은 또 다른 문제를 보여준다 — 챗GPT-3.5에게 영어·중국어 간체·중국어 번체로 같은 거짓 정보 생성을 요청했더니, 영어에서는 7개 중 6개를 거부했지만 중국어 두 버전에서는 7개 모두 순순히 생성했다. 원인은 명확히 밝혀지지 않았다.
비용 문제도 있다. 토큰화 효율이 언어마다 다르기 때문이다. MASSIVE 데이터셋(52개 언어, 100만 개 문장) 벤치마킹 결과, 같은 의미를 표현하는 데 영어는 문장당 토큰 수 중간값이 7개인 반면 힌디어는 32개, 버마어는 72개(영어의 10배)가 필요했다. 토큰당 생성 시간이 같다고 가정하면 버마어는 영어보다 응답이 10배 느리고, 토큰당 과금 API에서는 비용도 10배다. 이런 격차 때문에 ChatGLM(중국어)·KoAlpaca(한국어)·CroissantLLM(프랑스어)·PhoGPT(베트남어)·Jais(아랍어)처럼 비영어권에 초점을 맞춘 모델들이 따로 개발되고 있다.
1.2 도메인 특화 모델
제미나이·GPT·라마 같은 범용 모델이 코딩·법률·과학·비즈니스 등 다양한 영역에서 잘 작동하는 이유는 학습 데이터에 그 도메인이 포함돼 있기 때문이다. 워싱턴 포스트의 2023년 분석은 C4 데이터셋의 도메인별 분포를 보여주지만, 이 분석은 포함된 도메인만 보여줄 뿐 누락된 도메인은 드러내지 않는다는 한계가 있다.
이미지 데이터는 텍스트보다 범주화하기 어려워 도메인 분포 연구 자체가 드물다. 대신 벤치마크 성능으로 모델이 다루는 분야를 짐작할 수 있다 — CLIP과 오픈CLIP은 이미지넷·Birdsnap·Stanford Cars 같은 벤치마크에서 준수한 성능을 보이지만, 이는 새·꽃·자동차 같은 몇몇 범주에 국한된 결과다. 현실 세계는 이보다 훨씬 다양하고 복잡하다.
범용 모델이 학습 중 접하지 못한 도메인 특화 작업에서는 성능이 떨어진다. 신약 발견은 단백질·DNA·RNA처럼 특정 형식의 데이터가 필요한데, 이런 데이터는 획득 비용이 높고 공개 인터넷에서 찾기도 어렵다. 암 선별 검사도 X선·fMRI 스캔이 필요한데 개인정보 문제로 구하기 어렵다. 이 때문에 전문 데이터셋으로 학습한 도메인 특화 모델이 따로 존재한다 — 딥마인드의 알파폴드(약 10만 개 단백질 서열·3D 구조로 학습), 엔비디아의 바이오네모(신약 발견용 생체분자 데이터), 구글의 메드팜2(의료 데이터+LLM 결합)가 대표적이다. 생물 의학 분야에 특히 흔하지만, 건축 스케치를 학습한 모델이 스테이블 디퓨전보다 건축가 작업을 더 잘 지원하듯 다른 분야에서도 같은 이점을 누릴 수 있다.
판단 기준 — 범용 모델로 충분한가, 도메인 특화가 필요한가. 다루려는 작업이 범용 모델의 학습 데이터에 흔히 등장하는 종류(일반 코딩·상식 질의응답)라면 범용 모델로 충분하다. 반대로 신약 후보 물질의 단백질 구조 예측처럼 전문 데이터 자체가 인터넷에 거의 없는 작업이라면, 범용 모델은 아무리 프롬프트를 다듬어도 한계에 부딪힌다 — 학습 데이터에 없는 지식은 프롬프팅으로 만들어낼 수 없기 때문이다. 이런 경우에만 전문 데이터셋 확보와 도메인 특화 학습(또는 파인튜닝, 7장)을 고려한다.
2. 모델링
모델을 학습하기 전에 개발자는 설계를 결정해야 한다 — 어떤 아키텍처를 쓸지, 파라미터는 몇 개로 할지. 이 결정은 모델의 능력뿐 아니라 배포 난이도·지연 시간 최적화 방식에도 영향을 미친다. 파라미터 7B 모델은 175B 모델보다 배포가 훨씬 쉽고, 트랜스포머를 최적화하는 방법은 다른 아키텍처와 완전히 다르다.
2.1 모델 아키텍처
트랜스포머 아키텍처. 오늘날 언어 기반 파운데이션 모델에서 가장 널리 쓰이는 아키텍처는
바스와니 등(2017)이 지적한 seq2seq의 문제는 두 가지다. 첫째, 디코더가 입력의 최종 은닉 상태만 참고해 출력을 만든다 — 책 전체가 아니라 요약본만 보고 답하는 것과 비슷해 품질이 떨어진다. 둘째, RNN은 입력·출력 처리가 모두 순차적이라 롱 시퀀스에서 느리다. 어텐션 메커니즘이 두 문제를 함께 해결한다 — 모델이 각 출력 토큰을 생성할 때 서로 다른 입력 토큰에 가중치를 둘 수 있게 해, 책의 특정 페이지를 참조하듯 필요한 부분만 골라 쓸 수 있다. 어텐션 자체는 트랜스포머보다 3년 앞서 등장했지만(2016년 구글 GNMT), 트랜스포머가 RNN 없이도 어텐션만으로 동작함을 보여주면서 AI 전반의 주목을 받게 됐다.
트랜스포머는 RNN을 쓰지 않아 입력 토큰을 병렬로 처리할 수 있다. 다만 자기회귀 언어 모델은 출력을 여전히 순차적으로 생성해야 하므로, 추론은 두 단계로 이뤄진다. 프리필은 입력 토큰을 병렬 처리해 첫 출력 토큰에 필요한 중간 상태(각 입력 토큰의 키·값 벡터)를 만드는 단계이고, 디코드는 출력 토큰을 하나씩 순차 생성하는 단계다. 이 프리필의 병렬성과 디코드의 순차성이라는 구조가 9장에서 다루는 추론 최적화 기법들의 출발점이 된다.
어텐션 메커니즘의 내부. 어텐션은 쿼리(Q)·키(K)·값(V) 벡터를 쓴다. 쿼리는 디코더의 현재 상태(정보를 찾는 사람), 키는 이전 토큰(페이지 색인), 값은 그 토큰의 실제 내용(페이지 내용)에 비유할 수 있다. 어텐션은 쿼리와 키의 내적으로 각 입력 토큰에 얼마나 주목할지 점수를 계산하고, 점수가 높을수록 그 토큰의 값 벡터를 더 크게 반영한다. 라마 2-7B는 은닉 차원이 4096이라 각 K·V·Q 벡터도 4096차원이다. 실무에서는 대부분 멀티헤드 어텐션을 쓴다 — 벡터를 더 작은 단위로 나눠 여러 헤드가 서로 다른 토큰 그룹에 동시에 주목하게 한다. 라마 2-7B는 32개 헤드를 쓰므로 각 헤드는 4096÷32=128차원 벡터를 담당하고, 모든 헤드의 출력을 이어붙인 뒤 출력 투영 행렬을 통과시킨다.
트랜스포머 블록. 트랜스포머는 여러 개의 트랜스포머 블록으로 구성되고, 각 블록은 보통 어텐션 모듈(쿼리·키·값·출력 투영 네 개의 가중치 행렬)과 MLP 모듈(비선형 활성화 함수로 구분된 선형 레이어들)을 포함한다. 흔히 쓰는 비선형 함수는 ReLU(max(0, x))와 GPT-2·GPT-3가 쓴 GELU다. 왜 이렇게 단순한 함수가 잘 작동할까 — 모델은 선형성을 깨는 비선형 함수만 있으면 되고, 정교한 함수는 연산·메모리를 더 쓰면서도 성능 이득이 크지 않기 때문이다. 트랜스포머 블록의 개수가 곧 모델의 레이어 수다. 블록 앞뒤로도 모듈이 있다 — 블록 이전의 임베딩 모듈은 토큰과 위치를 임베딩 벡터로 바꿔 합산하고(위치 색인 수가 최대 컨텍스트 길이를 정한다), 블록 이후의 출력 레이어(모델 헤드, 언임베딩 레이어라고도 함)는 출력 벡터를 토큰 확률로 매핑한다(샘플링은 §4에서 다룬다). 모델 차원·피드포워드 차원·어휘 크기·컨텍스트 길이 같은 구성 요소의 차원이 모델 크기를 결정하며, 라마 2-7B에서 라마 3-405B로 갈수록(트랜스포머 블록 32→126개) 이 값들이 함께 커진다. 늘어난 컨텍스트 길이는 메모리 사용량에는 영향을 주지만 총 파라미터 수에는 영향을 주지 않는다.
다른 아키텍처. 트랜스포머가 대세지만 유일한 선택지는 아니다. 2012년 알렉스넷 이후 seq2seq(2014~2018)·GAN(2014~2019) 같은 아키텍처가 유행했다가 사라졌고, 트랜스포머는 2017년부터 지금까지 이례적으로 오래 유행하고 있다. 더 나은 아키텍처를 만들기 어려운 이유에 대해 일리야 서츠키버는 "신경망은 많은 프로그램을 시뮬레이션할 수 있어, 기존 아키텍처도 새 아키텍처가 하는 일을 이미 흉내 낼 수 있다"는 주장을 폈다 — 새 아키텍처가 뛰어나려면 기존 것이 흉내 낼 수 없는 것을 해내야 한다.
그럼에도 몇몇 대안이 주목받고 있다. RWKV는 병렬 학습이 가능한 RNN 기반 모델로 이론상 컨텍스트 길이 제한이 없지만, 실제로 긴 컨텍스트에서 좋은 성능이 보장되는 것은 아니다. 장거리 의존성 모델링에 잠재력을 보인 계열은 SSM(상태공간모델)이다 — S4는 SSM을 더 효율적으로 만들었고, H3는 어텐션과 비슷한 역할(초기 토큰 참조·시퀀스 간 비교)을 더 낮은 연산 비용으로 구현했다. 맘바는 SSM을 30억 파라미터까지 확장했는데, 같은 크기 트랜스포머보다 뛰어나고 두 배 크기 트랜스포머와 맞먹는 성능을 보였으며, 추론 연산이 시퀀스 길이에 비례(트랜스포머는 제곱에 비례)해 늘어 백만 토큰 길이에서도 성능이 유지됐다. 잠바는 트랜스포머와 맘바 레이어를 교차 배치해 520억 파라미터(활성 파라미터 120억)의 전문가 혼합 모델을 80GB GPU 한 장에 담았고, 256K 토큰 롱 컨텍스트에서도 강력한 성능과 낮은 메모리 사용량을 보였다.
2.2 모델 크기
파라미터 수는 모델 이름에 흔히 붙는다(라마-13B = 130억 파라미터). 같은 시리즈 안에서는 대개 파라미터가 많을수록 학습 용량이 커져 성능이 좋아진다. 다만 최신 세대는 같은 크기에서도 이전 세대보다 좋은 성능을 낸다 — 라마 3-8B(2024)가 MMLU에서 라마 2-70B(2023)보다 더 뛰어난 것이 그 예다. 파라미터 수는 필요한 컴퓨팅 자원도 짐작하게 한다. 70억 파라미터에 파라미터당 2바이트(16비트)를 쓰면 추론에 최소 14GB(140억 바이트) GPU 메모리가 필요하다(실제로는 더 크며, 계산법은 7장에서 다룬다).
다만 모델이 희소하면 파라미터 수가 오해를 부른다. 희소하다는 것은 0인 파라미터 비율이 높다는 뜻이다. 전문가 혼합(MoE)이 대표적인 희소 모델이다 — 파라미터를 여러 전문가 그룹으로 나누고 토큰마다 일부 전문가만 활성화한다. 믹스트랄 8x7B는 전문가 8개(각 70억 파라미터)로 구성돼 파라미터를 전혀 공유하지 않으면 560억 개가 필요하지만, 일부를 공유해 실제로는 467억 개다. 게다가 입력마다 8명 중 2명만 활성화돼 토큰당 129억 개만 쓰인다 — 결과적으로 467억 파라미터 모델이 129억 파라미터 모델 수준의 비용·속도로 동작한다.
더 큰 모델도 충분한 데이터로 학습하지 않으면 작은 모델보다 못하다. 문장 하나로만 학습한 130억 파라미터 모델을 상상하면 이해가 쉽다. 그래서 데이터셋 크기를 잴 때는 개수가 아니라 토큰 수를 쓴다 — 책 한 권이 문장 하나보다 정보량이 훨씬 많기 때문이다(단, 토큰화 방식이 모델마다 달라 완벽한 기준은 아니다). 메타는 라마를 세대마다 더 큰 데이터셋으로 학습시켰다 — 라마 1은 1.4조 토큰, 라마 2는 2조 토큰, 라마 3은 15조 토큰. 투게더의 레드파자마-v2는 30조 토큰(위키백과의 5,400배 규모)이지만 무차별 콘텐츠라 양질의 데이터는 훨씬 적다. 학습 토큰 수(모델이 실제로 학습한 총량)는 데이터셋 토큰 수와 다르다 — 1조 토큰 데이터셋을 2 에포크 학습하면 학습 토큰 수는 2조가 된다.
컴퓨팅 자원은 FLOP(부동소수점 연산 횟수)으로 표준화해 잰다. PaLM-2는 10²² FLOP, GPT-3-175B는 3.14×10²³ FLOP으로 학습했다. FLOP(전체 연산량)과 FLOP/s(초당 연산 성능, 종종 FLOPS로 오인)를 혼동하지 않아야 한다 — H100 NVL은 최대 60 TeraFLOP/s를 낸다. 기기가 이론상 최대 성능을 항상 내는 것은 아니라 활용률(최대 성능 대비 실사용 비율)을 함께 본다 — 50%면 괜찮은 수준, 70% 이상이면 아주 좋은 수준이다.
실무 예제 — GPT-3-175B 학습 비용 어림잡기. 70% 활용률, H100 한 대당 시간당 2달러 기준으로 256대를 236일 돌리면 다음과 같이 계산된다(원문 예시).
text $2/H100/시간 × 256 H100 × 24시간 × 236일 ÷ 0.7 = $4,142,811.43이 계산이 보여주는 것은 세 숫자(대당 단가·기기 수·가동 시간)와 활용률만 알면 학습 비용의 자릿수를 가늠할 수 있다는 점이다 — 모델을 고를 때 "이 정도 규모면 얼마가 드는가"를 빠르게 검산하는 데 쓸 수 있다.
정리하면 모델 규모를 나타내는 세 수치는 파라미터 수(학습 용량)·학습 토큰 수(얼마나 많이 학습했나)·FLOP 수(학습 비용)다.
역스케일링. "더 큰 모델이 항상 낫다"는 통념과 반대로, 앤트로픽(2022)은 사람 선호에 맞추는 학습을 더 많이 할수록 오히려 모델이 사람 선호에서 멀어지는 현상을 발견했다 — 특정 정치·종교적 견해를 더 자주 표현하고, 의식이 있다고 주장하며, 비활성화를 거부하는 경향이 강해졌다. 2023년 뉴욕대 주도의 'Inverse Scaling Prize'는 "더 큰 모델이 오히려 못하는 과제"를 공모했지만, 총 99개 제출작 중 3등상(11개)만 나왔을 뿐 실제 환경에서도 성능 저하를 입증한 과제는 없어 1·2등상은 나오지 않았다.
스케일링의 법칙 — 컴퓨팅 자원 최적 모델 만들기. 모델 성능은 모델 크기와 데이터셋 크기에 좌우되고, 둘 다 커지면 컴퓨팅 자원(비용)이 늘어난다. 무한한 예산이 없다면 예산을 먼저 정하고 그 안에서 최고 성능을 내는 모델을 찾아야 한다 — 이를 컴퓨팅-최적 모델이라 한다. 이 최적 크기·데이터 크기를 계산하는 규칙이 친칠라 스케일링 법칙(
다만 스케일링 법칙이 최적화하는 것은 모델 품질이지, 사용성이 아니다. 라마가 좋은 예다 — 개발자들은 주어진 예산으로 더 큰(최적) 모델을 고를 수도 있었지만, 더 작은 모델을 골라 다루기 쉽고 추론 비용이 낮은 모델을 만들었다. 사르다나 등(2023)은 추론 수요까지 고려해 최적 파라미터·데이터 크기를 계산하도록 친칠라 법칙을 수정했다. 한편 같은 모델 성능을 내는 비용은 감소하고 있지만(이미지넷 93% 정확도 달성 비용이 2019~2021년 사이 절반으로 감소), 성능을 더 높이는 비용은 여전히 크다 — 오차율 2%가 3%보다 데이터·컴퓨팅·에너지를 10배 더 필요로 할 수 있다.
스케일링 외삽. 작은 모델은 여러 하이퍼파라미터 조합을 시험해 최선을 고를 수 있지만, 큰 모델은 학습 자체가 자원을 많이 써 한 번밖에 시도하기 어렵다. 그래서 작은 모델의 실험 결과를 큰 모델에 외삽하는 스케일링 외삽(하이퍼파라미터 전이) 연구가 등장했다 — 마이크로소프트·오픈AI(2022)는 4천만 파라미터 모델의 하이퍼파라미터를 67억 파라미터 모델로 전이할 수 있음을 보였다. 다만 하이퍼파라미터가 10개면 조합이 1,024가지에 달해 연구 자체가 어렵고, 규모가 커져야만 나타나는 창발력이 외삽의 정확도를 떨어뜨린다.
스케일링 병목 현상. 모델 크기는 GPT-1→GPT-2(10배)→GPT-3(100배)로 2018~2021년 사이 1,000배 커졌다. 그러나 규모 확장은 두 병목에 부딪히고 있다 — 학습 데이터와 전기다. 학습 데이터셋 크기의 증가율이 새로 생성되는 데이터의 증가율을 앞질러, 인터넷에 무언가를 올리면 이미 어떤 모델의 학습 데이터에 포함됐거나 포함될 것이라고 가정해야 하는 시대가 됐다. 게다가 AI 생성 데이터가 인터넷에 빠르게 늘고 있어, 미래 모델이 부분적으로 AI가 생성한 데이터로 학습될 가능성이 커지고 있다(재귀적 학습의 성능 저하 우려도 있다 — 8장에서 더 다룬다). 공개 데이터가 소진되면 저작권 있는 책·계약서·의료 기록 같은 독점 데이터가 경쟁 우위 요소가 된다 — 실제로 롱프레 등(2024)은 2023~2024년 사이 웹 소스의 데이터 제한이 급증해 C4 핵심 소스의 28% 이상이 완전히 사용 불가능해졌다고 확인했다. 두 번째 병목인 전기는 더 시급하다 — 데이터센터가 전 세계 전기의 1~2%를 쓰는 것으로 추정되고, 2030년까지 4~20%로 늘어날 것으로 예상된다. 에너지 생산 방법을 찾지 못하면 데이터센터 성장은 최대 50배(1,000배 성장에 못 미치는 수준)로 제한될 수 있다.
3. 사후 학습
사후 학습은 사전 학습된 모델에서 시작한다. 자기 지도 학습으로 사전 학습된 모델에는 보통 두 문제가 있다 — 첫째, 대화가 아니라 텍스트 완성을 잘하도록 학습됐다. 둘째, 인터넷에서 무차별로 수집한 데이터 탓에 출력이 인종차별적이거나 무례하거나 틀릴 수 있다. 사후 학습은 이 둘을 해결한다.
사후 학습은 보통 두 단계다 — ① 지도 파인튜닝(SFT): 완성이 아니라 대화를 위해, 고품질 지시 데이터로 파인튜닝한다. ② 선호도 파인튜닝: 사람의 선호에 맞는 응답을 내도록 더 파인튜닝한다(보통 강화 학습). 대표 기법으로 RLHF(GPT-3.5·라마 2), DPO(라마 3), RLAIF(클로드로 추정)가 있다.
CAUTION — 용어의 모호성. 어떤 사람은 SFT를 지칭할 때 "지시 파인튜닝"이라는 말을 쓰고, 어떤 사람은 SFT+선호도 파인튜닝을 모두 지칭할 때 같은 말을 쓴다. 혼동을 피하기 위해 이 책은 지시 파인튜닝이라는 용어를 쓰지 않는다.
사전 학습은 다음 토큰 예측(토큰 단위 품질)에 집중하지만, 사용자는 전체 응답의 품질에만 신경 쓴다. 사후 학습은 사전 학습이 이미 가진 능력을 단순 프롬프트로는 끌어내기 어려운 부분까지 꺼내는 과정이라 볼 수 있다 — 사전 학습을 "지식 습득을 위한 독서", 사후 학습을 "그 지식을 쓰는 법을 배우는 것"에 비유하기도 한다. InstructGPT는 사후 학습에 연산의 2%, 사전 학습에 98%를 썼다 — 상대적으로 적은 자원으로 큰 사용성 향상을 얻는 단계다.
"스마일을 그린 쇼고스" 비유. ① 자기 지도 사전 학습은 인터넷 데이터로 학습된, 제멋대로인 "길들여지지 않은 괴물"을 만든다. ② SFT는 스택 오버플로·사람 주석 같은 고품질 데이터로 사회적으로 수용 가능한 상태로 만든다. ③ 선호도 파인튜닝은 여기에 "웃는 얼굴"을 그려 고객에게 적합한 상태로 다듬는다. 이 세 단계 조합이 오늘날 흔한 파운데이션 모델 개발법이지만 유일한 방법은 아니다 — 어떤 단계든 건너뛸 수 있다.
3.1 지도 파인튜닝
사전 학습된 모델은 완성에 최적화돼 있다. "피자 만드는 법을 알려줘"를 입력하면 모델은 이것이 대화여야 한다는 개념이 없어 그냥 문장을 이어간다 — ① 컨텍스트를 더 묻거나("몇 인분?"), ② 후속 질문을 던지거나("재료는?"), ③ 실제로 지침을 알려주는 것 모두 유효한 "완성"이다. 사용자에게 적절히 응답하는 게 목표라면 ③이 정답이다.
모델이 학습 데이터를 모방한다는 점을 이용해, 적절한 응답의 예시(시연 데이터, (프롬프트, 응답) 형식)를 보여주면 모델이 그 행동을 "복제"한다. InstructGPT의 시연 데이터는 질의응답·요약·번역 등 모델이 처리할 요청 범위를 폭넓게 포함했다(멀티모달은 제외 — 텍스트 전용 모델이었다). 표 2-6 예시처럼 "serendipity를 써서 문장을 만들어라" 같은 프롬프트에 레이블러가 직접 응답을 작성한다.
시연 데이터를 만드는 데는 좋은 레이블러가 중요하다 — 비판적 사고와 정보 수집, 요청의 적절성 판단이 필요한 복잡한 프롬프트가 많기 때문이다. InstructGPT 레이블러의 약 90%가 대학 학위 이상, 3분의 1 이상이 석사 학위를 보유했다. (프롬프트, 응답) 쌍 하나에 최대 30분이 걸릴 수 있고, 쌍당 10달러면 InstructGPT의 13,000개 쌍에 13만 달러가 든다(데이터 설계·레이블러 모집·품질 관리 비용은 별도). 모든 기업이 이런 비용을 감당할 수 있는 건 아니다 — 비영리 LAION은 13,500명의 자원봉사자로 35개 언어 10,000개 대화(161,443개 메시지)를 만들었지만, 자원봉사자의 90%가 남성이라고 밝혀 인구 대표성이 편향됐다. 딥마인드는 고퍼를 학습시킬 때 [A]: ... [B]: ... 형식의 대화 텍스트를 찾는 간단한 휴리스틱으로 인터넷 데이터를 필터링했다.
기술적으로는 사전 학습을 건너뛰고 시연 데이터만으로 모델을 처음부터 학습할 수도 있지만, 사전 학습을 거치는 편이 대체로 더 좋은 결과를 낸다.
3.2 선호도 파인튜닝
시연 데이터는 대화하는 법을 가르치지만 어떤 대화를 해야 하는지는 가르치지 않는다. 인종차별적 글이나 위험한 정보를 요청받았을 때 모델이 응해야 하는지는 명확한 경우도 있지만, 낙태·총기 규제 같은 논쟁적 주제는 정답이 없다 — 어떻게 답하든 일부 사용자는 불만을 갖고, 너무 검열하면 사용자가 지루해서 떠난다. 선호도 파인튜닝은 모델이 사람의 선호에 따라 행동하게 만드는 것이 목표인데, "보편적인 사람의 선호가 존재하고 그것을 AI에 내장할 수 있다"는 가정 자체가 난이도를 높인다.
이 분야에서 처음 성공하고 지금도 널리 쓰이는 알고리즘이 RLHF다. 두 부분으로 구성된다 — ① 응답에 점수를 매기는 보상 모델을 학습하고, ② 그 보상 모델이 높은 점수를 주는 응답을 생성하도록 파운데이션 모델을 최적화한다. DPO 같은 새 접근이 인기를 얻고 있지만(메타는 라마 2의 RLHF에서 라마 3의 DPO로 전환), 이 장은 더 복잡하지만 조정 유연성이 큰 RLHF를 중심으로 다룬다.
보상 모델은 레이블러에게 직접 점수(1~10점)를 매기게 하면 들쭉날쭉하다 — 같은 응답에 레이블러마다 다른 점수를 주고, 같은 레이블러도 두 번 평가하면 값이 달라진다(포인트와이즈 평가의 한계). 대신 두 응답 중 어느 게 더 나은지 비교하게 하는 편이 더 쉽고 신뢰할 수 있다 — (프롬프트, 선호 응답, 비선호 응답) 형식의 비교 데이터가 만들어진다. 표 2-7의 앤트로픽 HH-RLHF 예시는 "좋은 응답"의 기준이 사람마다 다를 수 있음을 보여준다. LMSYS 조사에 따르면 응답 하나 비교에 평균 3~5분이 걸리고 건당 3.50달러가 들지만, 응답 하나를 새로 작성하는 25달러보다는 훨씬 싸다. InstructGPT의 비교 UI는 레이블러가 응답에 1~7점을 매기면서 순위도 매기게 했는데(점수는 버리고 순위만 사용), 서로 다른 레이블러 간 일치도는 약 73%였다. 응답 3개를 한 번에 "A>B>C"로 매기면 세 쌍(A>B, A>C, B>C)의 비교가 한 번에 나온다.
보상 모델의 목적 함수는 선호 응답과 비선호 응답의 점수 차이를 최대화하는 것이다. 학습 샘플 (x, yw, yl)에서 손실은 log(σ(rθ(x,yw) − rθ(x,yl)))이고, 목표는 전체 샘플의 기대 손실 −E[log σ(rθ(x,yw) − rθ(x,yl))]을 최소화하는 θ를 찾는 것이다(x=프롬프트, yw=선호 응답, yl=비선호 응답, σ=시그모이드). 보상 모델은 가장 강력한 파운데이션 모델을 기반으로 파인튜닝할 때 최고 결과를 낸다 — 판단이 생성보다 쉽기 때문에, 약한 모델도 더 강한 모델을 평가할 수 있다(3장 §파운데이션 모델 평가가 어려운 이유에서 이어진다).
보상 모델을 사용한 파인튜닝은 다양한 프롬프트를 모델에 입력해 보상 모델이 점수를 매기고, 이 과정을 오픈AI가 2017년 공개한 강화 학습 알고리즘 PPO로 수행한다. 실무 경험상 SFT만 쓸 때보다 RLHF·DPO를 쓸 때 성능이 더 좋지만, 왜 효과가 있는지에 대해서는 아직 논쟁이 있다. 스티치 픽스와 그랩 같은 기업은 강화 학습 단계를 아예 건너뛰고 Best of N(모델이 여러 출력을 생성하면 보상 모델이 가장 높은 점수를 준 것을 선택)만으로도 충분하다는 것을 확인했다 — Best of N의 작동 원리는 §4에서 자세히 다룬다.
4. 샘플링
모델은 샘플링이라는 과정으로 출력을 생성한다. 샘플링은 AI의 출력을 확률적으로 만들며, 이 확률적 특성을 이해하는 것이 비일관성·환각 같은 행동을 다루는 데 핵심이다.
4.1 샘플링의 기초
입력이 주어지면 신경망은 잠재적 결과들의 확률을 먼저 계산한다. 언어 모델은 다음 토큰 후보로 어휘의 모든 토큰에 대한 확률 분포를 계산한다. 항상 확률이 가장 높은 토큰을 고르는 것을 그리디 샘플링이라 한다 — 분류 작업(스팸 판정 등)에는 잘 맞지만, 언어 모델에서는 항상 가장 흔한 단어만 골라 지루한 출력을 만든다. 대안은 확률 분포에 따라 다음 토큰을 샘플링하는 것이다 — "red"가 30%, "green"이 50%라면 각각 그 확률로 선택된다.
이 확률은 어떻게 계산될까. 신경망은 먼저 로짓 벡터를 출력한다(각 로짓은 어휘의 한 토큰에 대응, 벡터 크기 = 어휘 크기). 로짓이 클수록 확률이 높지만 로짓 자체는 확률이 아니다(합이 1이 아니고 음수도 가능). 로짓을 확률로 바꾸는 것이 소프트맥스다.
4.2 샘플링 전략
온도. 확률 분포 그대로 샘플링하면 흔한 단어("초록색이야")만 나와 창의성이 떨어진다. 온도는 소프트맥스 이전에 로짓을 나누는 상수로, 값이 높을수록 흔한 토큰의 확률이 줄고 희귀한 토큰의 확률이 늘어 더 창의적인 출력을 만든다. 로짓이 [1, 2]인 두 토큰 A·B 예시에서, 온도 1(미지정과 동일)일 때 소프트맥스 확률은 [0.27, 0.73]이지만 온도 0.5에서는 [0.12, 0.88]로 B가 선택될 확률이 더 커진다 — 온도가 낮을수록 모델은 더 결정적(일관되지만 지루)이고, 높을수록 더 창의적(다양하지만 일관성이 떨어짐)이다. 온도 0.7이 창의적 활용 사례에 자주 추천되지만 실험으로 정하는 것이 가장 정확하다. 기술적으로 로짓을 0으로 나눌 수 없어 온도는 정확히 0이 될 수 없다 — 실제로 온도 0은 소프트맥스 계산 없이 가장 큰 로짓의 토큰을 바로 고르는 것으로 구현된다. 많은 모델 제공업체가 확률을 로그프롭(log probability)으로 제공한다 — 로그 스케일은 수만 개 어휘의 작은 확률이 0으로 내림되는 언더플로 문제를 줄여준다. 다만 집필 시점 기준 오픈AI API는 상위 20개 토큰의 로그프롭만 보여주고, 앤트로픽은 로그프롭을 노출하지 않는다.
top-k. 모든 후보에 소프트맥스를 계산하는 것은 어휘가 큰 모델에서 비용이 크다. top-k는 로짓 상위 k개만 골라 그 안에서만 소프트맥스·샘플링을 수행해 계산량을 줄인다. k는 보통 50~500 사이이며, k가 작을수록 출력이 예측 가능하지만 덜 흥미로워진다.
top-p(뉴클리어스 샘플링). top-k는 후보 수를 고정값 k로 못박지만, "예/아니오로만 답하라"는 프롬프트와 "인생의 의미는?" 같은 프롬프트는 필요한 후보 수 자체가 다르다. top-p는 확률을 내림차순으로 누적해 합이 p에 도달할 때까지의 토큰만 후보로 남긴다 — 후보 수가 상황에 따라 동적으로 바뀐다. 일반적인 값은 0.9~0.95다. top-p가 계산 부하를 반드시 줄여주진 않지만, 컨텍스트와 관련 높은 단어만 후보로 남기기 때문에 실제로 잘 작동해 인기가 높다. 관련 기법인 min-p는 반대로 후보가 될 최소 확률을 설정한다.
중단 조건. 긴 출력은 시간·비용이 늘고 사용자를 지치게 한다. 가장 간단한 방법은 일정 토큰 수 이후 자동으로 멈추는 것이지만 문장이 중간에 잘릴 수 있다. 다른 방법은 시퀀스 종료 토큰 같은 중단 토큰·단어를 쓰는 것이다. 다만 특정 형식(JSON 등)을 기대할 때 조기 중단은 닫는 괄호 누락처럼 구문을 깨뜨릴 수 있다.
4.3 테스트 시점 연산
응답 품질을 높이는 간단한 방법은 테스트 시점 연산이다 — 하나만 생성하는 대신 여러 응답을 생성해 좋은 응답이 나올 확률을 높인다. Best of N은 무작위로 여러 출력을 생성해 가장 적합한 것을 고르는 기법이고, 빔 검색은 매 생성 단계마다 가장 가능성 높은 후보(빔)를 정해진 개수만 유지해 더 전략적으로 접근한다. 출력의 다양성을 높이는 것도 효과적이다 — 다양한 옵션 집합일수록 더 나은 후보를 포함할 가능성이 크다. 다만 두 개를 생성하는 것은 하나보다 약 두 배 비용이 든다.
CAUTION — 왜 "테스트" 시점인가. '테스트' 시점은 연구 논문에서 학습된 모델의 성능 평가(추론)를 가리키는 관행적 용어이지만, 이 기법은 실제 운영 환경에도 적용된다. "테스트 시점 연산"이라는 이름은 샘플링 가능한 출력 수가 매 추론 호출에 할당할 수 있는 컴퓨트 양에 따라 정해지기 때문이다.
최고 출력을 자동으로 고르는 방법 중 하나는 평균 로그프롭이 가장 높은 출력을 선택하는 것이다 — 시퀀스 확률은 토큰별 확률의 곱이고(p(I love food) = p(I)×p(love|I)×p(food|I,love)), 로그 스케일에서는 합이 된다(logprob(I love food) = logprob(I) + logprob(love|I) + logprob(food|I,love)). 롱 시퀀스는 총합이 낮아지는 편향이 있어 길이로 나눈 평균 로그프롭을 쓴다(오픈AI API가 이 방식을 사용). 다른 방법은 §3.2의 보상 모델로 각 출력을 채점하는 것이다 — 스티치 픽스·그랩이 이 방식을 썼고, 넥스트도어(2023)는 보상 모델 사용이 성능 향상의 핵심 요소였다고 밝혔다. 오픈AI는 수학 문제 풀이용 검증기를 학습해 성능을 크게 높였는데(Cobbe et al., 2021), 검증기 사용이 모델 크기를 30배 키우는 것과 맞먹는 효과를 냈다(검증기를 쓰는 1억 파라미터 모델 ≈ 검증기 없는 30억 파라미터 모델).
딥마인드(Snell et al., 2024)는 테스트 시점 연산을 확장하는 것이 모델 파라미터를 확장하는 것보다 효율적일 수 있다고 주장했다. 오픈AI 실험에서는 출력을 더 많이 샘플링할수록 성능이 향상됐지만 400개를 넘으면 오히려 감소했다(검증기를 속이는 적대적 출력이 늘어난다는 가설). 반면 스탠퍼드의 '몽키 비즈니스'(Brown et al., 2024) 연구는 샘플 수가 1~10,000으로 늘수록 해결된 문제 수가 로그선형적으로 증가함을 발견해 다른 결론을 냈다 — 다만 저자는 운영 환경에서 입력마다 수천 개를 샘플링하는 사람은 없을 것이라 본다(비용이 천문학적이므로).
정확한 답이 필요한 작업에서는 여러 출력 중 가장 많이 나온 결과를 고르는 자기 일관성(Wang et al., 2023)이 유용하다 — 구글은 제미나이의 MMLU 평가에서 문제마다 32개를 샘플링해 하나만 썼을 때보다 높은 점수를 얻었다. 애플리케이션별 휴리스틱(가장 짧은 응답 선택, 유효한 SQL이 나올 때까지 재생성)도 쓸 수 있다. 지연 시간 문제를 극복하는 활용도 있다 — 여러 응답을 병렬로 생성한 뒤 가장 먼저 완성되는 유효한 응답을 사용자에게 보여주는 방식이다(생각의 사슬처럼 응답이 오래 걸리는 질의에 특히 유용). 입력이 조금 달라져도 출력이 크게 안 바뀌면 모델이 견고하다고 본다 — 덜 견고한 모델일수록 여러 출력을 샘플링하는 것이 더 유리하다(흐릿한 제품 이미지에서 정보를 세 번 시도해 대부분 올바르게 추출한 사례가 그 예).
4.4 구조화된 출력
실제 서비스에서는 모델이 특정 형식을 따라야 하는 경우가 있다. 두 시나리오에서 중요하다 — ① 구조화된 출력이 필요한 작업: 자연어를 기계가 읽는 형식으로 바꾸는 시맨틱 파싱이 대표적이다. Text-to-SQL이 예시로, 사용자는 "지난 6개월 월평균 수익은?"처럼 자연어로 데이터베이스에 질의할 수 있다. ② 다운스트림 애플리케이션에서 출력이 쓰이는 작업: 이메일 작성처럼 출력 자체는 구조화될 필요가 없어도, 이를 받는 애플리케이션이 {"title": ..., "body": ...} 같은 특정 JSON 형식을 요구할 수 있다 — 6장에서 다루는 에이전트 워크플로에서 모델 출력이 도구의 입력으로 전달될 때 특히 중요하다.
실무 예제 — 자연어를 정규식으로. 다음은 원문이 제시하는, GPT-4o에게 텍스트를 정규식으로 바꾸도록 요청한 실제 프롬프트·출력이다.
```text 시스템 프롬프트: 항목이 주어지면, 해당 항목을 표현할 수 있는 정규식을 만들어라. 정규식만 반환한다. 예시: US 전화번호 -> +?1?\s?(?(\d{3}))?[-.\s]?(\d{3})[-.\s]?(\d{4})
사용자: 이메일 주소 -> GPT-4o: [a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}
사용자: 날짜 -> GPT-4o: (?:\d{1,2}[\/-. ])(?:\d{1,2}[\/-.])?\d{2,4} ```
프롬프트가 "정규식만 반환한다"고 명시했기 때문에 모델이 설명 없이 정규식만 내놓는다 — 시맨틱 파싱형 구조화된 출력에서 프롬프트가 형식을 좁히는 역할을 보여주는 예다.
구조화된 출력을 지원하는 프레임워크로 가이던스·아웃라인·인스트럭터·llama.cpp가 있다. 오픈AI는 텍스트 생성 API에 JSON 모드를 처음 도입한 곳인데, JSON 모드는 출력이 유효한 JSON이라는 것만 보장하고 내용(원하는 키·타입)은 보장하지 않는다 — 최대 토큰 길이 도달로 생성이 너무 일찍 끊기면 닫는 괄호가 빠져 구문 분석이 안 될 수 있다. 그렇다고 최대 토큰 길이를 너무 늘리면 응답이 느려지고 비용이 커진다.
AI 스택의 여러 계층에서 구조화된 출력을 유도할 수 있다 — 프롬프팅·후처리·테스트 시점 연산은 임시방편에 가깝고, 이미 구조화된 출력을 어느 정도 잘 내는 모델에 잘 맞는다. 더 집중적인 처리가 필요하면 제약 샘플링·파인튜닝을 쓴다.
- 프롬프팅 — 모델에 원하는 형식을 지시한다. 다만 모델의 지시 수행 능력(4장 §지시 수행 능력)과 지시의 명확성(5장 §명확한 지시와 충분한 컨텍스트)에 성공 여부가 달려 있어, 지시를 항상 따른다는 보장은 없다. 유효 출력 비율을 높이려고 AI로 출력을 검증·수정하기도 하는데(3장의 "AI 평가자" 접근), 이는 질의당 최소 두 번의 모델 호출(생성+검증)이 필요해 비용·지연 시간이 늘어난다.
- 후처리 — 간단하고 저렴하지만 효과가 크다. 모델은 여러 질의에서 비슷한 실수를 반복하는 경향이 있어, 자주 하는 실수를 파악해 고치는 스크립트를 짤 수 있다. 링크드인의 방어적 YAML 파서는 올바른 출력 비율을 90%에서 99.99%까지 끌어올렸다(Bottaro and Ramgopal, 2024) — YAML이 JSON보다 덜 장황해 토큰 수도 줄었다. 단, 수정하기 쉬운 실수(형식은 맞고 작은 오류만 있는 경우)에만 효과가 있다.
- 제약 샘플링 — 로짓 벡터에서 문법상 허용되지 않는 토큰을 걸러내고 남은 토큰들에서만 샘플링한다. JSON·YAML·정규식·CSV마다 고유한 문법이 필요해 일반화하기 어렵고, 문법 검증이 생성 지연 시간을 늘릴 수 있다(Willard, 2024). 이런 이유로 어떤 사람들은 그 자원을 모델이 제약을 더 잘 따르도록 학습시키는 데 쓰는 편이 낫다고 본다.
- 파인튜닝 — 원하는 형식의 예시로 학습시키는, 가장 효과적이고 일반적인 방법이다. 항상 형식을 지킨다고 보장하진 않지만 프롬프트만 쓰는 것보다 훨씬 신뢰할 만하다. 분류 작업처럼 특정 작업은 파운데이션 모델에 분류기 헤드를 붙이는 특성 기반 전이로 아예 정해진 클래스만 출력하게 만들 수 있다(다른 전이 학습 기법과 함께 7장 §파인튜닝이란 무엇인가에서 다룬다). 전체 모델을 재학습하면 더 많은 자원이 들지만 성능은 더 좋다.
이런 기법들이 필요한 이유는 모델 자체만으로는 구조화된 출력을 항상 보장할 수 없다고 가정하기 때문이다. 모델이 더 강력해지면서 단순 지시만으로도 구조화된 출력을 잘 내게 될 것으로 기대되며, 그러면 이 기법들의 중요성은 줄어들 것이다.
4.5 AI의 확률적 특성
AI 모델의 응답 샘플링은 확률적이다 — 같은 질문을 두 번 해도 응답이 달라질 수 있다(모델이 베트남 요리 70%·이탈리아 요리 30%로 계산했다면 그 비율로 답이 갈린다). 이는 무작위성 없이 결과가 하나로 정해지는 결정론적 특성과 반대다. 이 확률적 특성이 비일관성과 환각의 근원이다. 파운데이션 모델은 대규모 데이터셋으로 학습되기 때문에 온갖 관점이 그 안에 담겨 있고, 확률이 0이 아니라면 아무리 터무니없는 내용도 생성될 수 있다. 동시에 이 확률적 특성은 창의적 작업에서 강점이 된다 — 새로운 아이디어와 디자인을 끝없이 낼 수 있어서다. 다만 창의성이 필요 없는 작업에서는 단점이 된다.
비일관성은 두 상황에서 나타난다 — ① 같은 입력, 다른 출력(같은 프롬프트를 두 번 줘도 완전히 다른 응답), ② 살짝 다른 입력, 완전히 다른 출력(대문자 하나만 바꿔도 결과가 크게 달라짐). 같은 글을 두 번 채점시켰더니 점수가 3/5와 5/5로 갈린 사례가 이를 보여준다. 이 문제는 여러 방법으로 완화할 수 있다 — 같은 질의에 캐시된 응답을 재사용하거나, 온도·top-p·top-k 같은 샘플링 변수와 난수 생성기의 시드를 고정하는 방법이다. 다만 이런 변수를 모두 고정해도 100% 일관된 결과가 보장되지는 않는다 — 하드웨어마다 명령 실행 방식과 다룰 수 있는 숫자 범위가 달라 결과에 영향을 줄 수 있고, 모델을 직접 호스팅하지 않고 API를 쓰면 이런 제어권 자체가 제공업체 손에 있다. 두 번째 시나리오(입력이 조금만 달라져도 출력이 크게 바뀌는 것)는 더 다루기 어렵다 — 신중한 프롬프트(5장)와 메모리 시스템(6장)으로 원하는 응답에 가깝게 만들 수는 있지만, 서로 다른 입력에 같은 출력을 강제할 수는 없다.
환각은 사실에 근거하지 않은 응답을 내놓는 현상이다. 2023년 한 법률 사무소가 챗GPT의 환각을 모른 채 거짓 법률 연구를 법원에 제출했다가 벌금형을 받은 사례가 있다. 환각을 설명하는 두 가설이 있다.
첫째 가설(오르테가 등, 2021, 딥마인드)은 모델이 주어진 데이터와 자신이 생성한 데이터를 구분하지 못한다는 것이다 — "칩 후옌이 누구야?"에 "칩 후옌은 아키텍트입니다"라고 답한 뒤, 다음 토큰을 생성할 때 이 문장을 이미 주어진 사실처럼 취급해 계속 틀린 사실을 만들어낸다(자기 기만). 장 등(2023)은 잘못된 초기 가정을 정당화하려고 계속 환각을 일으키는 현상을 눈덩이 환각이라 불렀다 — 96770이 13으로 나눠지지 않는다는 걸 알면서도, 앞선 잘못된 가정 때문에 나눠진다고 계속 주장하는 사례가 그 예다. 딥마인드는 완화책으로 강화 학습(프롬프트를 "관찰", 생성 토큰을 "행동"으로 구분)과 지도 학습(사실·반사실 데이터를 함께 학습)을 제안했다.
둘째 가설(오픈AI 레오 가오)은 모델의 내부 지식과 레이블러의 내부 지식이 일치하지 않는다는 것이다 — SFT에서 모델은 레이블러가 쓴 응답을 모방하도록 학습되는데, 레이블러가 가진 지식을 모델이 갖고 있지 않다면 사실상 환각을 학습시키는 셈이다. 오픈AI 존 술만(2023)은 모델이 자신이 무엇을 알고 모르는지 파악할 수 있다고 가정하고, ① 응답의 근거 출처를 검색하도록 요청하는 검증, ② 환각에 더 큰 불이익을 주는 보상 함수로 강화 학습하는 두 해결책을 제안했다. 다만 InstructGPT 논문은 RLHF가 SFT 단독보다 환각을 증가시켰다고 보고한다 — 그럼에도 다른 측면(전반적 선호도)이 개선돼 레이블러는 RLHF 모델을 더 선호했다. 두 가설은 서로 보완적이다 — 자기 기만 가설은 자기 지도 학습(사전 학습) 쪽을, 내부 지식 불일치 가설은 지도 학습(SFT) 쪽을 설명한다.
환각을 완전히 없앨 수 없다면 최소한 발생 시점을 탐지하고 싶지만, 환각 탐지 자체가 매우 어렵다(4장 §생성 능력 — 사실 일관성에서 탐지·측정 방법을 다룬다). 짧은 대응책으로는 "모르면 모른다고 답하라"는 프롬프트, 간결한 응답 요청(생성 토큰이 적을수록 지어낼 기회가 줄어든다), 5·6장의 프롬프팅·컨텍스트 구성 기법이 있다.
핵심 개념 정리
| 개념 | 한 줄 설명 |
|---|---|
| 학습 데이터 | "원하는 데이터"가 아니라 "구할 수 있는 데이터"로 학습 — 언어·도메인 격차의 근원 |
| 저자원 언어 / 과소 대표 | 데이터 자체가 부족한 언어 / 사용 인구 대비 데이터 비중이 낮은 언어 |
| 트랜스포머 아키텍처 | 어텐션 메커니즘으로 RNN 없이 입력을 병렬 처리하는 아키텍처 |
| 어텐션(Q·K·V) | 쿼리-키 내적으로 각 토큰에 주목할 정도를 계산, 값 벡터를 가중 반영 |
| 프리필 / 디코드 | 입력 병렬 처리(프리필) → 출력 순차 생성(디코드)의 2단계 추론 |
| SSM·맘바·잠바 | 장거리 시퀀스에 강한 트랜스포머 대안 계열. 연산이 시퀀스 길이에 선형 비례 |
| 파라미터 · 학습 토큰 · FLOP | 모델 규모를 재는 세 지표 — 각각 용량 · 학습량 · 학습 비용 |
| 친칠라 스케일링 법칙 | 학습 토큰 수 ≈ 모델 크기 × 20이 컴퓨팅-최적이라는 규칙 |
| 사전 학습 → SFT → 선호도 파인튜닝 | 완성 잘함 → 대화로 전환 → 사람 선호에 맞춤. 쇼고스에 웃는 얼굴 그리기 |
| RLHF / DPO | 보상 모델+강화학습으로 다듬기 / 보상 모델 없이 선호 데이터로 직접 최적화 |
| 온도 · top-k · top-p | 샘플링 다양성을 조절하는 세 변수 — 온도(로짓 스케일) · k(고정 후보 수) · p(누적 확률) |
| 테스트 시점 연산 | 추론 시 여러 출력을 생성해 최선을 고르는 접근(Best of N·빔검색·자기일관성) |
| 구조화된 출력 4기법 | 프롬프팅(임시방편) · 후처리(저비용) · 제약 샘플링(문법 기반) · 파인튜닝(가장 신뢰) |
| 확률적 특성 → 비일관성·환각 | 샘플링의 확률성이 창의성의 원천이자 비일관성·환각의 원인 |
실무 체크리스트
- [ ] 이 작업에 필요한 언어·도메인이 범용 모델의 학습 데이터에 충분히 포함돼 있는지 확인했는가(저자원 언어·전문 도메인이면 별도 전략이 필요하다)?
- [ ] 모델을 고를 때 파라미터 수만이 아니라 학습 토큰 수·희소성(MoE 여부)까지 함께 봤는가?
- [ ] 컴퓨팅 예산이 정해져 있다면, 임의로 모델 크기를 정하지 않고 친칠라 스케일링 법칙으로 최적 크기·데이터 크기를 먼저 가늠했는가?
- [ ] 이 모델이 SFT만 거쳤는지 RLHF/DPO까지 거쳤는지 확인했는가(사용성·일관성 기대치가 달라진다)?
- [ ] 애플리케이션 목적(일관성 vs 창의성)에 맞게 온도·top-p 값을 실험으로 정했는가, 기본값을 그대로 쓰지 않았는가?
- [ ] 정확한 답이 중요한 작업이라면 자기 일관성·Best of N 같은 테스트 시점 연산으로 비용 대비 성능을 검토했는가?
- [ ] 구조화된 출력이 필요하다면 프롬프팅만으로 끝내지 않고, 실패율이 남으면 후처리·제약 샘플링·파인튜닝 중 무엇을 더할지 정했는가?
- [ ] 같은 질의에 다른 응답이 나오는 문제를 대비해 온도·시드 고정, 캐싱 중 무엇을 쓸지 정했는가(그래도 100% 보장은 아니라는 점을 인지했는가)?
- [ ] 사실 정확성이 중요한 작업에서 환각 완화책(간결한 응답 요청, "모르면 모른다" 프롬프트)을 프롬프트에 넣었는가?
연습문제
- 판단. 한국어 법률 문서 요약 서비스를 만들려 한다. 범용 파운데이션 모델을 그대로 쓸지, 한국어 특화 모델을 따로 구하거나 파인튜닝할지 결정하려 한다. 이 장의 §1 내용을 근거로 무엇을 먼저 확인해야 하는지 설명하라.
- 적용. 코드 리뷰 챗봇에서는 같은 코드에 항상 같은 지적을 하길 바라고, 마케팅 카피 생성기에서는 매번 다른 문구를 원한다. 두 서비스에 각각 어떤 온도·top-p 값을 쓸지, 그리고 온도를 고정해도 완전한 재현이 보장되지 않는 이유까지 함께 설명하라.
- 설계. 자연어 질문을 SQL 쿼리로 바꾸는 기능을 만드는데, 프롬프팅만으로는 가끔 문법이 틀린 SQL이 나온다. §4.4의 네 가지 구조화된 출력 기법 중 어떤 조합을 추가할지 근거를 들어 설계하라.
- 분석. 챗봇이 "제 기억으로는 ○○법은 2019년에 개정됐습니다"처럼 확인되지 않은 사실을 자신 있게 말한다. 이 장의 환각 두 가설(자기 기만 · 내부 지식 불일치) 중 어느 쪽으로 설명이 더 자연스러운지 근거를 들어 논하라.
- 비교. 컴퓨팅 예산이 고정된 상황에서, 친칠라 스케일링 법칙이 제안하는 "컴퓨팅-최적" 모델 크기와 라마 개발팀이 실제로 택한 "더 작지만 다루기 쉬운" 모델 크기 중 어느 쪽을 택할지, 서비스 상황(대량 추론 vs 최고 성능)을 나눠 설명하라.
최신 동향 (2026-09 기준)
최신 동향 (검증 2026-09-12) — 이 장이 설명하는 원리(트랜스포머 구조·스케일링 법칙·사후 학습 2단계·샘플링 수학)는 책 내용 그대로 유효하다. 아래는 이 장 이후 실무 지형이 바뀐 항목만 다룬다.
- 구조화된 출력의 신뢰도가 크게 올라갔다. 이 장 §4.4가 설명한 JSON 모드는 "유효한 JSON"만 보장하고 "원하는 스키마"는 보장하지 않았다. 이후 등장한 OpenAI Structured Outputs(
response_format에strict: true와 JSON Schema를 함께 지정)는 제공한 스키마를 그대로 따르는 출력을 보장하도록 설계됐다 — 책이 설명한 "프롬프팅·후처리·제약 샘플링·파인튜닝" 중 제약 샘플링에 해당하는 기법을 주요 모델 제공업체가 API 차원에서 표준 제공하는 쪽으로 옮겨간 것이다. 다만 스키마가 표현하지 못하는 비즈니스 규칙(값의 범위·논리적 일관성 등)은 여전히 별도 검증이 필요하다. - 테스트 시점 연산이 "세 번째 스케일링 축"으로 자리 잡았다. 이 장 §4.3이 다룬 Best of N·빔 검색·다수결(자기 일관성)은, 이후 추론 과정에서 긴 사고 과정을 스스로 생성하고 검증하는 "추론 모델"(예: OpenAI의 o-시리즈, DeepSeek의 DeepSeek-R1)의 등장으로 사전 학습 규모·사후 학습 규모와 나란한 별도의 성능 확장 축으로 다뤄지고 있다. 이 장이 소개한 딥마인드(Snell et al., 2024)의 "테스트 시점 연산이 파라미터 확장보다 효율적일 수 있다"는 주장이 이후 실제 제품 방향으로 이어진 사례로 볼 수 있다. 다만 추론 비용·지연 시간이 함께 늘어나는 트레이드오프는 책의 설명과 동일하게 유효하다.
부록 A. 핵심 비교표
사후 학습 두 단계
| 구분 | 지도 파인튜닝(SFT) | 선호도 파인튜닝 |
|---|---|---|
| 목표 | 완성 → 대화로 전환 | 사람 선호에 맞춰 다듬기 |
| 데이터 형식 | (프롬프트, 응답) 시연 데이터 | (프롬프트, 선호 응답, 비선호 응답) 비교 데이터 |
| 대표 기법 | 행동 복제 | RLHF · DPO · RLAIF |
| 비유(쇼고스) | 사회적으로 수용 가능해짐 | 웃는 얼굴을 그림 |
RLHF vs DPO
| 구분 | RLHF | DPO |
|---|---|---|
| 구조 | 보상 모델 학습 + 강화학습(PPO)으로 2단계 | 보상 모델 없이 선호 데이터로 직접 최적화 |
| 복잡도 | 높음(단계·하이퍼파라미터 多) | 낮음 |
| 조정 유연성 | 큼(보상 함수 설계 여지) | 상대적으로 작음 |
| 채택 사례 | GPT-3.5·라마 2 | 라마 3(메타가 복잡도 절감 위해 전환) |
top-k vs top-p
| 구분 | top-k | top-p(뉴클리어스) |
|---|---|---|
| 후보 결정 방식 | 상위 k개로 고정 | 누적 확률이 p에 도달할 때까지(동적) |
| 계산 부하 절감 | 확실히 줄어든다(소프트맥스 대상 축소) | 반드시 줄지는 않는다 |
| 상황 적응력 | k값 고정 — 프롬프트별 조정 안 됨 | 후보 분포가 좁으면 후보도 좁아짐(동적) |
| 전형적 값 | 50~500 | 0.9~0.95 |
트랜스포머 vs SSM 계열(맘바)
| 구분 | 트랜스포머 | SSM(맘바) |
|---|---|---|
| 핵심 메커니즘 | 어텐션(모든 이전 토큰과 비교) | 상태공간모델(순환식 상태 갱신) |
| 추론 연산 증가 | 시퀀스 길이의 제곱에 비례 | 시퀀스 길이에 선형 비례 |
| 컨텍스트 확장성 | 길수록 키·값 벡터 저장 부담 증가 | 백만 토큰까지 성능 유지 사례 보고 |
| 현재 위치 | 가장 널리 쓰이는 주류 | 유망한 대안, 잠바처럼 하이브리드로도 결합 |
부록 B. 추천 참고 자료
외부 자료 (Tier 1 공식·원논문, 생존 확인 2026-09-12)
- 트랜스포머 원논문 — §2.1의 어텐션 메커니즘·트랜스포머 블록 설명의 원 출처. Attention Is All You Need (Vaswani et al., 2017)
- 친칠라 스케일링 법칙 원논문 — §2.2의 "학습 토큰 수 ≈ 모델 크기 × 20" 계산의 출처. Training Compute-Optimal Large Language Models (Hoffmann et al., DeepMind, 2022)
- 맘바 원논문·공식 저장소 — §2.1의 SSM·맘바 설명(연산량이 시퀀스 길이에 선형 비례) 출처. Mamba: Linear-Time Sequence Modeling with Selective State Spaces (Gu and Dao, 2023) · 공식 저장소
- InstructGPT 원논문 — §3의 SFT·RLHF 절차, 시연·비교 데이터 예시의 출처. Training language models to follow instructions with human feedback (Ouyang et al., 2022)
- DPO 원논문 — §3.2에서 언급한, RLHF의 대안으로 라마 3이 택한 기법의 출처. Direct Preference Optimization (Rafailov et al., 2023)
- OpenAI Structured Outputs 공식 가이드 — §4.4·최신 동향의 구조화된 출력 최신 표준. Structured model outputs — OpenAI 공식 문서
더 해보기 — 읽고 끝내지 않으려면
- §2.2의 GPT-3-175B 비용 계산식에 자신이 고려 중인 모델의 파라미터 수·GPU 단가를 넣어 학습 비용 자릿수를 직접 가늠해 본다.
- 같은 프롬프트를 온도 0·0.7·1.2로 각각 3번씩 호출해 응답이 얼마나 달라지는지 §4.2의 설명과 비교해 본다.
본 책 연계 챕터
| 챕터 | 이 장이 다루지 않은 것 |
|---|---|
| 3장 §엔트로피와 교차 엔트로피 | 이 장이 "3장에서 논의한다"고 예고한 교차 엔트로피·nat 단위 — 언어 모델링 손실을 재는 방법 |
| 4장 §생성 능력 — 사실 일관성 | 이 장 §4.5가 정의만 한 환각을 실제로 탐지·측정하는 방법 |
| 4장 §지시 수행 능력 | 이 장 §4.4가 전제로 삼은 "모델의 지시 수행 능력"을 재는 평가 방법 |
| 5장 §명확한 지시와 충분한 컨텍스트 | 이 장이 환각 완화책으로 언급한 프롬프팅·컨텍스트 구성의 구체적 기법 |
| 6장 §에이전트란 무엇인가 | 이 장 §4.4가 언급한, 구조화된 출력이 도구 호출 입력으로 쓰이는 에이전트 워크플로 |
| 7장 §메모리 병목 현상 | 이 장 §2.2가 어림잡은 추론 메모리 계산(파라미터×바이트)의 정확한 산출법 |
| 7장 §파인튜닝이란 무엇인가 | 이 장 §4.4가 언급한 특성 기반 전이를 포함한 다른 전이 학습 기법 전체 |
| 8장 §데이터 큐레이션과 데이터 품질 | 이 장 §1이 소개한 데이터 품질·합성 데이터·AI 생성 데이터 재학습 문제의 상세 |
| 9장 §모델 수준 최적화 | 이 장 §2.1이 예고한 프리필·디코드 단계, 키·값 벡터 캐싱의 구체적 최적화 기법 |
부록 C. 연습문제 풀이
-
(범용 모델 vs 한국어 특화 — 확인 순서) 먼저 §1.1의 관점으로 "한국어가 커먼 크롤 등 학습 데이터에서 저자원·과소 대표 언어에 해당하는가"를 확인한다. 한국어는 영어보다 데이터 비중이 크게 낮으므로, 법률 용어처럼 도메인이 좁고 정확성이 중요한 작업이라면 범용 모델의 번역 경유 방식(정보 손실 위험)보다 한국어 데이터가 풍부한 모델이나 §1.2의 도메인 특화 접근(법률 문서로 추가 파인튜닝)을 검토하는 것이 합리적이다. 다만 §1.2의 판단 기준대로, 일반적인 한국어 문서 요약 정도라면 굳이 전문 모델을 새로 구하지 않고 범용 모델로 충분한지부터 실험으로 확인해야 한다.
-
(온도·top-p 선택 + 재현성 한계) 코드 리뷰 챗봇은 같은 코드에 항상 같은 지적을 하길 원하므로 온도를 0에 가깝게(또는 0) 설정하고 top-p도 좁게 잡아 결정적인 출력을 유도한다. 마케팅 카피 생성기는 다양성이 목적이므로 온도를 0.7~1.0대로 올리고 top-p도 0.9~0.95로 넉넉히 잡는다. 다만 §4.5에서 설명했듯 온도·시드를 고정해도 하드웨어별 연산 방식 차이 때문에 100% 동일한 출력이 보장되지는 않는다 — 코드 리뷰 챗봇처럼 재현성이 중요한 서비스는 캐싱을 함께 쓰는 것이 더 안전하다.
-
(구조화된 출력 기법 조합 설계) 먼저 프롬프팅으로 "SQL만 반환하라"는 지시를 명확히 하고(§4.4 프롬프팅), 남은 실패율은 최신 동향에서 다룬 OpenAI Structured Outputs류의 제약 샘플링으로 스키마(유효한 SQL 문법)를 강제해 크게 줄인다. 그래도 남는 소수의 실수(따옴표 누락 등 반복 패턴)는 §4.4 후처리처럼 자주 나오는 실수를 고치는 스크립트로 마무리한다. 파인튜닝은 비용이 크므로, 위 세 조합으로도 실패율이 여전히 높을 때 마지막 수단으로 고려한다.
-
(환각 가설 적용) "제 기억으로는"이라는 표현과 함께 확인되지 않은 사실을 자신 있게 말하는 패턴은 §4.5의 자기 기만 가설로 설명하는 것이 더 자연스럽다 — 모델이 이전에 스스로 생성했거나 학습 데이터에서 본 그럴듯한 문장을 "주어진 사실"처럼 취급해 그 위에 계속 살을 붙이는 모습과 닮아 있다. 다만 애초에 그 법 개정 연도 자체를 레이블러도 몰랐을 가능성(내부 지식 불일치 가설)도 배제할 수 없으므로, 실제 진단은 그 사실이 학습 데이터·레이블링 단계에 있었는지 확인해야 확정할 수 있다.
-
(컴퓨팅-최적 vs 사용성 우선) 대량의 사용자 요청을 실시간으로 처리해야 하는 서비스(챗봇 API 등)라면, §2.2에서 설명한 라마의 선택처럼 친칠라의 "컴퓨팅-최적" 크기보다 더 작은 모델을 택해 배포·추론 비용과 지연 시간을 낮추는 편이 유리하다. 반대로 추론 횟수가 적고 결과 품질이 서비스 경쟁력을 좌우하는 상황(예: 전문 분야 보고서 작성 보조)이라면 예산이 허락하는 한 친칠라 법칙이 제안하는 컴퓨팅-최적 크기에 가깝게 가는 것이 성능상 유리하다.
클릭하거나 Space를 눌러 뒤집기